www.gusucode.com > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM源码程序 > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM\stprtool\linear\finite\linsvm.m
function [alpha,theta,solution]=linsvm(X,J) % LINSVM Support Vector Machines for the linear and separable case. % [alpha,theta,solution]=linsvm(X,J) % % LINSVM is an implementation of the Support Vector Machines % method for the linear and separable case. It finds a vector % alpha and a threshold which solve following task % % 1) alpha' * x >= theta for x=X(:,i), J(i)=1, (1st class) % alpha' * x < theta for x=X(:,i), J(i)=2, (2nd class) % % 2) and a margin between point sets (their convex hulls) % is maximal. % % The algorithm transforms the problem mentioned above to the % equivalent problem of quadratic programing and uses Matlab % Optimization Toolbox for resolving. % % Input: % X [DxM] contains M training points in the D-dimensional % feature space. X=[x1,x2,..XM] where xi is i-th column vectors. % J [1xM] contains class labels of the points in X. A class % label must be 1 for the first class and 2 for the second class. % % Output: % alpha [Dx1] normal vector of the found decision hyperplane. % theta [1x1] threshold of the found hyperplane. % solution [1x1], 1 ... solution is found, % 0 ... solution is not found. % % See also PERCEPTR, KOZINEC, EKOZINEC. % % Statistical Pattern Recognition Toolbox, Vojtech Franc, Vaclav Hlavac % (c) Czech Technical University Prague, http://cmp.felk.cvut.cz % Written Vojtech Franc (diploma thesis) 02.11.1999, 17.01.2000, 13.4.2000 % Modifications % 24. 6.00 V. Hlavac, comments polished. % 16-dec-2000, comments repaired % Transform original feature space into the homogenous (theta=0) % coordinates. [alpha,X]=ctransf(0,0,X,J); N=size(X,1); % dimension K=size(X,2); % number of training points. % Transform the problem to the quadratic programming problem % min x'*H*x+f'*x , A*x <= b % x %------------------------------------------- H=eye(N); f=zeros(N,1); b=-ones(K,1); A=-X'; % Call quadratic programming method %----------------------------------------------- [alpha,lag,how]=qp(H,f,A,b,[],[],[],0,-1); % Transform the found solution from the homogenous coordinates % into original space. [alpha,theta]=ictransf(alpha); % Set solution according to the qp result %---------------------------------------- if strcmpi(how,'ok')==1, solution=1; else solution=0; end